#include "qarreceiver.h"
#include <QDebug>

QARReceiver::QARReceiver(QObject *parent)
	: QThread(parent)
{
	
}

QARReceiver::~QARReceiver()
{

}

void QARReceiver::run()
{
	socket = new QUdpSocket();
	bool b = socket->bind(QHostAddress::AnyIPv4, 10001);
	if (b)
	{
		qDebug() << "local socket bind success";
	}
	else
	{
		qDebug() << "local socket bind failed" << socket->errorString();
	}
	connect(socket, SIGNAL(readyRead()), this, SLOT(onReadData()),Qt::DirectConnection);
	exec();
}

void QARReceiver::startListening()
{
	this->start();
}

void QARReceiver::stopListenning()
{
	if (socket != NULL)
		socket->deleteLater();
	this->exit();
	this->wait();
	
}

void QARReceiver::onReadData()
{
	qDebug() << "received QAR xml data";

		QByteArray data;
		data.resize(socket->pendingDatagramSize());
		socket->readDatagram(data.data(), data.size());
		QDomDocument doc;
		doc.setContent(data);
		QDomElement ele = doc.firstChildElement("parameters");
		if (ele.isNull())
		{
			return;
		}
		ele = ele.firstChildElement("parameter");
		if (ele.isNull())
		{
			return;
		}
		QAROriginData qarData;
		QMap<QString, QString> valueMap;
		while (!ele.isNull())
		{
			valueMap[ele.attribute("name")] = ele.attribute("value");
			ele = ele.nextSiblingElement();
		}
		qarData.ADR_IN_FLT = valueMap["3ADR_IN_FLT"].toFloat();
		qarData.AFT_CGO_HT_INS = valueMap["AFT_CGO_HT_INS"].toFloat();
		qarData.AILERON_LEFT_1 = valueMap["AILERON_LEFT_1"].toFloat();
		qarData.AILERON_LEFT_2 = valueMap["AILERON_LEFT_2"].toFloat();
		qarData.AILERON_RGHT_1 = valueMap["AILERON_RGHT_1"].toFloat();
		qarData.AILERON_RGHT_2 = valueMap["AILERON_RGHT_2"].toFloat();
		qarData.ALT_SEL = valueMap["ALT_SEL"].toFloat();
		qarData.ALT_STD_LSH = valueMap["ALT_STD_LSH"].toFloat();
		qarData.ALT_STD_MSH = valueMap["ALT_STD_MSH"].toFloat();
		qarData.AOAMAX = valueMap["AOAMAX"].toFloat();
		qarData.AOA_ADC_1 = valueMap["AOA_ADC_1"].toFloat();
		qarData.AOA_ADC_2 = valueMap["AOA_ADC_2"].toFloat();
		qarData.AOA_LH = valueMap["AOA_LH"].toFloat();
		qarData.AOA_PROT = valueMap["AOA_PROT"].toFloat();
		qarData.AOA_RH = valueMap["AOA_RH"].toFloat();
		qarData.AOA_VOTED = valueMap["AOA_VOTED"].toFloat();
		qarData.AP1_INST_DISC = valueMap["AP1_INST_DISC"].toFloat();
		qarData.AP2_INST_DISC = valueMap["AP2_INST_DISC"].toFloat();
		qarData.APPR_DH_CA = valueMap["APPR_DH_CA"].toFloat();
		qarData.APPR_DH_FO = valueMap["APPR_DH_FO"].toFloat();
		qarData.APPR_TYPE = valueMap["APPR_TYPE"].toFloat();
		qarData.APU_GEN_FLT = valueMap["APU_GEN_FLT"].toFloat();
		qarData.AP_1 = valueMap["AP_1"].toFloat();
		qarData.AP_2 = valueMap["AP_2"].toFloat();
		qarData.AP_FD_TCAS_ARM = valueMap["AP_FD_TCAS_ARM"].toFloat();
		qarData.AP_FD_TCAS_EGD = valueMap["AP_FD_TCAS_EGD"].toFloat();
		qarData.AP_OFF_VOLUNT = valueMap["AP_OFF_VOLUNT"].toFloat();
		qarData.AP_OFF_WARN = valueMap["AP_OFF_WARN"].toFloat();
		qarData.ATS1_INST_DISC = valueMap["ATS1_INST_DISC"].toFloat();
		qarData.ATS2_INST_DISC = valueMap["ATS2_INST_DISC"].toFloat();
		qarData.AUTBRK_FAULT_1 = valueMap["AUTBRK_FAULT_1"].toFloat();
		qarData.AUTBRK_FAULT_2 = valueMap["AUTBRK_FAULT_2"].toFloat();
		qarData.AUTBRK_OFF_1 = valueMap["AUTBRK_OFF_1"].toFloat();
		qarData.AUTBRK_OFF_2 = valueMap["AUTBRK_OFF_2"].toFloat();
		qarData.AUTO_LAND_WN = valueMap["AUTO_LAND_WN"].toFloat();
		qarData.BACKUP_SPD_ACT = valueMap["BACKUP_SPD_ACT"].toFloat();
		qarData.BACKUP_SPD_VAL = valueMap["BACKUP_SPD_VAL"].toFloat();
		qarData.BACK_ALTI_GPS = valueMap["BACK_ALTI_GPS"].toFloat();
		qarData.BAT1_VOLTAGE = valueMap["BAT1_VOLTAGE"].toFloat();
		qarData.BAT2_VOLTAGE = valueMap["BAT2_VOLTAGE"].toFloat();
		qarData.BNO = valueMap["BNO"];
		qarData.BRAKE_MODE = valueMap["BRAKE_MODE"].toFloat();
		qarData.BRK_FAN_INSTAL = valueMap["BRK_FAN_INSTAL"].toFloat();
		qarData.BRK_SEL_V_FT1 = valueMap["BRK_SEL_V_FT1"].toFloat();
		qarData.BRK_TEMP1 = valueMap["BRK_TEMP1"].toFloat();
		qarData.BRK_TEMP2 = valueMap["BRK_TEMP2"].toFloat();
		qarData.BRK_TEMP3 = valueMap["BRK_TEMP3"].toFloat();
		qarData.BRK_TEMP4 = valueMap["BRK_TEMP4"].toFloat();
		qarData.BSCU1_EGD = valueMap["BSCU1_EGD"].toFloat();
		qarData.BSCU2_EGD = valueMap["BSCU2_EGD"].toFloat();
		qarData.CALL_BY_ADV = valueMap["CALL_BY_ADV"].toFloat();
		qarData.CAS_L = valueMap["CAS_L"].toFloat();
		qarData.Cabin_V_S_SYS_2 = valueMap["Cabin_V/S_SYS.2"].toFloat();
		qarData.Cabin_pressurization_warning = valueMap["Cabin_pressurization_warning"].toFloat();
		qarData.Constraint_Altitude = valueMap["Constraint_Altitude"].toFloat();
		qarData.DECEL_LOW_CA = valueMap["DECEL_LOW_CA"].toFloat();
		qarData.DECEL_LOW_FO = valueMap["DECEL_LOW_FO"].toFloat();
		qarData.DECEL_MAX_CA = valueMap["DECEL_MAX_CA"].toFloat();
		qarData.DECEL_MAX_FO = valueMap["DECEL_MAX_FO"].toFloat();
		qarData.DECEL_MID_CA = valueMap["DECEL_MID_CA"].toFloat();
		qarData.DECEL_MID_FO = valueMap["DECEL_MID_FO"].toFloat();
		qarData.DEC_HEIGHT = valueMap["DEC_HEIGHT"].toFloat();
		qarData.DH_MDAMDH_CA_LSH = valueMap["DH_MDAMDH_CA_LSH"].toFloat();
		qarData.DH_MDAMDH_FO = valueMap["DH_MDAMDH_FO"].toFloat();
		qarData.DISC_AP_MSG_CA = valueMap["DISC_AP_MSG_CA"].toFloat();
		qarData.DMC_Mark_Ident = valueMap["DMC_Mark_Ident"].toFloat();
		qarData.DME1_Frequency = valueMap["DME1_Frequency"].toFloat();
		qarData.DME2_Frequency = valueMap["DME2_Frequency"].toFloat();
		qarData.DTYPE = valueMap["DTYPE"];
		qarData.ECAM_DU1_Anomaly_Off = valueMap["ECAM_DU1_Anomaly/Off"].toFloat();
		qarData.ECAM_DU2_Anomaly_Off = valueMap["ECAM_DU2_Anomaly/Off"].toFloat();
		qarData.ECU_EEC1_channel_B_in_CTL = valueMap["ECU/EEC1_channel_B_in_CTL"].toFloat();
		qarData.ECU_EEC2_channel_B_in_CTL = valueMap["ECU/EEC2_channel_B_in_CTL"].toFloat();
		qarData.EFIS_Mode_Selection_ARC_Capt = valueMap["EFIS_Mode_Selection_ARC_Capt"].toFloat();
		qarData.EFIS_Mode_Selection_PLAN_Capt = valueMap["EFIS_Mode_Selection_PLAN_Capt"].toFloat();
		qarData.EFIS_Mode_Selection_ROSE_ILS_Capt = valueMap["EFIS_Mode_Selection_ROSE-ILS_Capt"].toFloat();
		qarData.EFIS_Mode_Selection_ROSE_NAV_Capt = valueMap["EFIS_Mode_Selection_ROSE-NAV_Capt"].toFloat();
		qarData.EFIS_Mode_Selection_ROSE_VOR_Capt = valueMap["EFIS_Mode_Selection_ROSE-VOR_Capt"].toFloat();
		qarData.EGT1 = valueMap["EGT1"].toFloat();
		qarData.EGT2 = valueMap["EGT2"].toFloat();
		qarData.ELAC1_fault = valueMap["ELAC1_fault"].toFloat();
		qarData.ELAC1_pitch_fault = valueMap["ELAC1_pitch_fault"].toFloat();
		qarData.ELAC1_roll_fault = valueMap["ELAC1_roll_fault"].toFloat();
		qarData.ELAC2_fault = valueMap["ELAC2_fault"].toFloat();
		qarData.ELAC2_pitch_fault = valueMap["ELAC2_pitch_fault"].toFloat();
		qarData.ELAC2_roll_fault = valueMap["ELAC2_roll_fault"].toFloat();
		qarData.ELEV_L_1 = valueMap["ELEV_L_1"].toFloat();
		qarData.ELEV_L_2 = valueMap["ELEV_L_2"].toFloat();
		qarData.ELEV_R_1 = valueMap["ELEV_R_1"].toFloat();
		qarData.ELEV_R_2 = valueMap["ELEV_R_2"].toFloat();
		qarData.EMER_GEN_LINE = valueMap["EMER_GEN_LINE"].toFloat();
		qarData.ENG1_MOD_SEL = valueMap["ENG1_MOD_SEL"].toFloat();
		qarData.ENG2_MOD_SEL = valueMap["ENG2_MOD_SEL"].toFloat();
		qarData.ESNL1 = valueMap["ESNL1"].toFloat();
		qarData.ESNL2 = valueMap["ESNL2"].toFloat();
		qarData.ESNL3 = valueMap["ESNL3"].toFloat();
		qarData.ESNL4 = valueMap["ESNL4"].toFloat();
		qarData.ESNL5 = valueMap["ESNL5"].toFloat();
		qarData.ESNL6 = valueMap["ESNL6"].toFloat();
		qarData.ESNR1 = valueMap["ESNR1"].toFloat();
		qarData.ESNR2 = valueMap["ESNR2"].toFloat();
		qarData.ESNR3 = valueMap["ESNR3"].toFloat();
		qarData.ESNR4 = valueMap["ESNR4"].toFloat();
		qarData.ESNR5 = valueMap["ESNR5"].toFloat();
		qarData.ESNR6 = valueMap["ESNR6"].toFloat();
		qarData.Eng1_Fire = valueMap["Eng1_Fire"].toFloat();
		qarData.Eng2_Fire = valueMap["Eng2_Fire"].toFloat();
		qarData.Event_Marker = valueMap["Event_Marker"].toFloat();
		qarData.FCU_ALT_CHANGE = valueMap["FCU_ALT_CHANGE"].toFloat();
		qarData.FCU_ALT_PULL = valueMap["FCU_ALT_PULL"].toFloat();
		qarData.FCU_ALT_PUSH = valueMap["FCU_ALT_PUSH"].toFloat();
		qarData.FCU_APPR_PB = valueMap["FCU_APPR_PB"].toFloat();
		qarData.FCU_DATA_DW = valueMap["FCU_DATA_DW"].toFloat();
		qarData.FCU_DATA_UP = valueMap["FCU_DATA_UP"].toFloat();
		qarData.FCU_DAT_LH = valueMap["FCU_DAT_LH"].toFloat();
		qarData.FCU_DAT_RH = valueMap["FCU_DAT_RH"].toFloat();
		qarData.FCU_EXPED_PB = valueMap["FCU_EXPED_PB"].toFloat();
		qarData.FCU_FCU1_FAIL = valueMap["FCU_FCU1_FAIL"].toFloat();
		qarData.FCU_FCU1_HEAL = valueMap["FCU_FCU1_HEAL"].toFloat();
		qarData.FCU_FCU1_SEL = valueMap["FCU_FCU1_SEL"].toFloat();
		qarData.FCU_FCU2_FAIL = valueMap["FCU_FCU2_FAIL"].toFloat();
		qarData.FCU_FCU2_HEAL = valueMap["FCU_FCU2_HEAL"].toFloat();
		qarData.FCU_FCU2_SEL = valueMap["FCU_FCU2_SEL"].toFloat();
		qarData.FCU_FDOFF_LH = valueMap["FCU_FDOFF_LH"].toFloat();
		qarData.FCU_FDOFF_RH = valueMap["FCU_FDOFF_RH"].toFloat();
		qarData.FCU_FMGC1_FAIL = valueMap["FCU_FMGC1_FAIL"].toFloat();
		qarData.FCU_FMGC1_SEL = valueMap["FCU_FMGC1_SEL"].toFloat();
		qarData.FCU_FMGC2_FAIL = valueMap["FCU_FMGC2_FAIL"].toFloat();
		qarData.FCU_FMGC2_SEL = valueMap["FCU_FMGC2_SEL"].toFloat();
		qarData.FCU_FPA_SEL = valueMap["FCU_FPA_SEL"].toFloat();
		qarData.FCU_LAT_PULL = valueMap["FCU_LAT_PULL"].toFloat();
		qarData.FCU_LAT_PUSH = valueMap["FCU_LAT_PUSH"].toFloat();
		qarData.FCU_LAT_SET = valueMap["FCU_LAT_SET"].toFloat();
		qarData.FCU_LOC_PRES = valueMap["FCU_LOC_PRES"].toFloat();
		qarData.FCU_METRIC_SEL = valueMap["FCU_METRIC_SEL"].toFloat();
		qarData.FCU_POW_PULSE = valueMap["FCU_POW_PULSE"].toFloat();
		qarData.FCU_SPD_CHANGE = valueMap["FCU_SPD_CHANGE"].toFloat();
		qarData.FCU_SPD_PB = valueMap["FCU_SPD_PB"].toFloat();
		qarData.FCU_SPD_PULL = valueMap["FCU_SPD_PULL"].toFloat();
		qarData.FCU_SPD_PUSH = valueMap["FCU_SPD_PUSH"].toFloat();
		qarData.FCU_VRT_CHANGE = valueMap["FCU_VRT_CHANGE"].toFloat();
		qarData.FCU_VRT_PULL = valueMap["FCU_VRT_PULL"].toFloat();
		qarData.FCU_VRT_PUSH = valueMap["FCU_VRT_PUSH"].toFloat();
		qarData.FCU_V_S_SEL = valueMap["FCU_V_S_SEL"].toFloat();
		qarData.FDPTCH_CA_1 = valueMap["FDPTCH_CA_1"].toFloat();
		qarData.FDPTCH_CA_2 = valueMap["FDPTCH_CA_2"].toFloat();
		qarData.FDPTCH_CA_3 = valueMap["FDPTCH_CA_3"].toFloat();
		qarData.FDPTCH_CA_4 = valueMap["FDPTCH_CA_4"].toFloat();
		qarData.FDROLL_CA_1 = valueMap["FDROLL_CA_1"].toFloat();
		qarData.FDROLL_CA_2 = valueMap["FDROLL_CA_2"].toFloat();
		qarData.FDROLL_CA_3 = valueMap["FDROLL_CA_3"].toFloat();
		qarData.FDROLL_CA_4 = valueMap["FDROLL_CA_4"].toFloat();
		qarData.FDYAW_CA_1 = valueMap["FDYAW_CA_1"].toFloat();
		qarData.FDYAW_CA_2 = valueMap["FDYAW_CA_2"].toFloat();
		qarData.FDYAW_CA_3 = valueMap["FDYAW_CA_3"].toFloat();
		qarData.FDYAW_CA_4 = valueMap["FDYAW_CA_4"].toFloat();
		qarData.FD_1 = valueMap["FD_1"].toFloat();
		qarData.FD_2 = valueMap["FD_2"].toFloat();
		qarData.FFKG1 = valueMap["FFKG1"].toFloat();
		qarData.FFKG2 = valueMap["FFKG2"].toFloat();
		qarData.FIRE_APU = valueMap["FIRE_APU"].toFloat();
		qarData.FLARE_LAW_ACT = valueMap["FLARE_LAW_ACT"].toFloat();
		qarData.FLT_NO1 = valueMap["FLT_NO1"];
		qarData.FLT_NO2 = valueMap["FLT_NO2"];
		qarData.FLT_NO3 = valueMap["FLT_NO3"];
		qarData.FLT_NO4 = valueMap["FLT_NO4"];
		qarData.FLT_NO5 = valueMap["FLT_NO5"];
		qarData.FLT_NO6 = valueMap["FLT_NO6"];
		qarData.FLT_NO7 = valueMap["FLT_NO7"];
		qarData.FLT_NO8 = valueMap["FLT_NO8"];
		qarData.FMA_MSG_CK_AP = valueMap["FMA_MSG_CK_AP"].toFloat();
		qarData.FMA_MSG_CONF = valueMap["FMA_MSG_CONF"].toFloat();
		qarData.FMA_MSG_DECEL = valueMap["FMA_MSG_DECEL"].toFloat();
		qarData.FMA_MSG_DEG = valueMap["FMA_MSG_DEG"].toFloat();
		qarData.FMA_MSG_DISC = valueMap["FMA_MSG_DISC"].toFloat();
		qarData.FMA_MSG_DRAG = valueMap["FMA_MSG_DRAG"].toFloat();
		qarData.FMA_MSG_GEAR = valueMap["FMA_MSG_GEAR"].toFloat();
		qarData.FMA_MSG_G_D = valueMap["FMA_MSG_G_D"].toFloat();
		qarData.FMA_MSG_HOLD = valueMap["FMA_MSG_HOLD"].toFloat();
		qarData.FMA_MSG_M_A = valueMap["FMA_MSG_M_A"].toFloat();
		qarData.FMA_MSG_NAVA = valueMap["FMA_MSG_NAVA"].toFloat();
		qarData.FMA_MSG_UPG = valueMap["FMA_MSG_UPG"].toFloat();
		qarData.FPA = valueMap["FPA"].toFloat();
		qarData.FPA_SELECTED = valueMap["FPA_SELECTED"].toFloat();
		qarData.FRAME_COUNTER = valueMap["FRAME_COUNTER"].toFloat();
		qarData.FROM1 = valueMap["FROM1"];
		qarData.FROM2 = valueMap["FROM2"];
		qarData.FROM2_0 = valueMap["FROM2_0"];
		qarData.FROM3 = valueMap["FROM3"];
		qarData.FROM4 = valueMap["FROM4"];
		qarData.FUEL_QUANTITY = valueMap["FUEL_QUANTITY"].toFloat();
		qarData.FWC_WARN_MSG1_1 = valueMap["FWC_WARN_MSG1_1"].toFloat();
		qarData.FWC_WARN_MSG1_2 = valueMap["FWC_WARN_MSG1_2"].toFloat();
		qarData.FWC_WARN_MSG1_3 = valueMap["FWC_WARN_MSG1_3"].toFloat();
		qarData.FWC_WARN_MSG1_4 = valueMap["FWC_WARN_MSG1_4"].toFloat();
		qarData.FWC_WARN_MSG1_5 = valueMap["FWC_WARN_MSG1_5"].toFloat();
		qarData.FWC_WARN_MSG1_6 = valueMap["FWC_WARN_MSG1_6"].toFloat();
		qarData.FWC_WARN_MSG1_7 = valueMap["FWC_WARN_MSG1_7"].toFloat();
		qarData.FWC_WARN_MSG1_8 = valueMap["FWC_WARN_MSG1_8"].toFloat();
		qarData.FWC_WARN_MSG2_1 = valueMap["FWC_WARN_MSG2_1"].toFloat();
		qarData.FWC_WARN_MSG2_2 = valueMap["FWC_WARN_MSG2_2"].toFloat();
		qarData.FWC_WARN_MSG2_3 = valueMap["FWC_WARN_MSG2_3"].toFloat();
		qarData.FWC_WARN_MSG2_4 = valueMap["FWC_WARN_MSG2_4"].toFloat();
		qarData.FWC_WARN_MSG2_5 = valueMap["FWC_WARN_MSG2_5"].toFloat();
		qarData.FWC_WARN_MSG2_6 = valueMap["FWC_WARN_MSG2_6"].toFloat();
		qarData.FWC_WARN_MSG2_7 = valueMap["FWC_WARN_MSG2_7"].toFloat();
		qarData.FWC_WARN_MSG2_8 = valueMap["FWC_WARN_MSG2_8"].toFloat();
		qarData.F_APP_MSG_CA = valueMap["F_APP_MSG_CA"].toFloat();
		qarData.F_APP_RAW_CA = valueMap["F_APP_RAW_CA"].toFloat();
		qarData.GAZ_OXY_PAX_IN = valueMap["GAZ_OXY_PAX_IN"].toFloat();
		qarData.GD_SPOIL_ARM_1 = valueMap["GD_SPOIL_ARM_1"].toFloat();
		qarData.GD_SPOIL_ARM_2 = valueMap["GD_SPOIL_ARM_2"].toFloat();
		qarData.GEN1_LINE_PB = valueMap["GEN1_LINE_PB"].toFloat();
		qarData.GLA_MLA_ACT = valueMap["GLA_MLA_ACT"].toFloat();
		qarData.GND_FLT_BOOLEA = valueMap["GND_FLT_BOOLEA"].toFloat();
		qarData.GPWS_ALERTS = valueMap["GPWS_ALERTS"].toFloat();
		qarData.GPWS_VA_ON = valueMap["GPWS_VA_ON"].toFloat();
		qarData.GW_LSH = valueMap["GW_LSH"].toFloat();
		qarData.GW_MSH = valueMap["GW_MSH"].toFloat();
		qarData.HDG_VS_SEL = valueMap["HDG_VS_SEL"].toFloat();
		qarData.HEADING_SEL = valueMap["HEADING_SEL"].toFloat();
		qarData.HF_1_EMITTING = valueMap["HF_1_EMITTING"].toFloat();
		qarData.HIGHSPDT = valueMap["HIGHSPDT"].toFloat();
		qarData.HI_ALT_PB = valueMap["HI_ALT_PB"].toFloat();
		qarData.HPV_ENG1 = valueMap["HPV_ENG1"].toFloat();
		qarData.HPV_ENG2 = valueMap["HPV_ENG2"].toFloat();
		qarData.HYD_L_PRES_B = valueMap["HYD_L_PRES_B"].toFloat();
		qarData.HYD_L_PRES_G = valueMap["HYD_L_PRES_G"].toFloat();
		qarData.HYD_L_PRES_Y = valueMap["HYD_L_PRES_Y"].toFloat();
		qarData.ILS1_Frequency = valueMap["ILS1_Frequency"].toFloat();
		qarData.ILS2_Frequency = valueMap["ILS2_Frequency"].toFloat();
		qarData.ILS_SEL_CRS1 = valueMap["ILS_SEL_CRS1"].toFloat();
		qarData.ILS_SEL_CRS2 = valueMap["ILS_SEL_CRS2"].toFloat();
		qarData.INNER_M_ON_1 = valueMap["INNER_M_ON_1"].toFloat();
		qarData.INNER_M_ON_2 = valueMap["INNER_M_ON_2"].toFloat();
		qarData.LAND_2_CAPABILITY = valueMap["LAND_2_CAPABILITY"].toFloat();
		qarData.LAND_CAPAB_STS = valueMap["LAND_CAPAB_STS"].toFloat();
		qarData.LATG_1 = valueMap["LATG_1"].toFloat();
		qarData.LATG_2 = valueMap["LATG_2"].toFloat();
		qarData.LATG_3 = valueMap["LATG_3"].toFloat();
		qarData.LATG_4 = valueMap["LATG_4"].toFloat();
		qarData.LATP_LSH = valueMap["LATP_LSH"].toFloat();
		qarData.LATP_MSH = valueMap["LATP_MSH"].toFloat();
		qarData.LAT_RES_CA = valueMap["LAT_RES_CA"].toFloat();
		qarData.LDG_LH = valueMap["LDG_LH"].toFloat();
		qarData.LDG_NOSE = valueMap["LDG_NOSE"].toFloat();
		qarData.LDG_RH = valueMap["LDG_RH"].toFloat();
		qarData.LDG_UNLOKDW = valueMap["LDG_UNLOKDW"].toFloat();
		qarData.LG_BOGIE_L_L1 = valueMap["LG_BOGIE_L_L1"].toFloat();
		qarData.LG_BOGIE_R_L1 = valueMap["LG_BOGIE_R_L1"].toFloat();
		qarData.LG_COMP_L_L1 = valueMap["LG_COMP_L_L1"].toFloat();
		qarData.LG_COMP_M_L1 = valueMap["LG_COMP_M_L1"].toFloat();
		qarData.LG_COMP_N_L1 = valueMap["LG_COMP_N_L1"].toFloat();
		qarData.LG_COMP_R_L1 = valueMap["LG_COMP_R_L1"].toFloat();
		qarData.LG_DOOR_C_N_L1 = valueMap["LG_DOOR_C_N_L1"].toFloat();
		qarData.LG_DOOR_C_P_L1 = valueMap["LG_DOOR_C_P_L1"].toFloat();
		qarData.LG_DOOR_O_N_L1 = valueMap["LG_DOOR_O_N_L1"].toFloat();
		qarData.LG_DOOR_O_P_L1 = valueMap["LG_DOOR_O_P_L1"].toFloat();
		qarData.LG_FAULT_L1 = valueMap["LG_FAULT_L1"].toFloat();
		qarData.LG_IN_CTL_L1 = valueMap["LG_IN_CTL_L1"].toFloat();
		qarData.LG_M_DNLK_L1 = valueMap["LG_M_DNLK_L1"].toFloat();
		qarData.LG_SOL_E_N_L1 = valueMap["LG_SOL_E_N_L1"].toFloat();
		qarData.LG_SOL_E_P_L1 = valueMap["LG_SOL_E_P_L1"].toFloat();
		qarData.LG_SOL_R_N_L1 = valueMap["LG_SOL_R_N_L1"].toFloat();
		qarData.LG_SOL_R_P_L1 = valueMap["LG_SOL_R_P_L1"].toFloat();
		qarData.LND_3_FL_OPTIVE_CPT = valueMap["LND_3_FL_OPTIVE_CPT"].toFloat();
		qarData.LND_3_FL_PSV_CPBT = valueMap["LND_3_FL_PSV_CPBT"].toFloat();
		qarData.LONGG_1 = valueMap["LONGG_1"].toFloat();
		qarData.LONGG_2 = valueMap["LONGG_2"].toFloat();
		qarData.LONGG_3 = valueMap["LONGG_3"].toFloat();
		qarData.LONGG_4 = valueMap["LONGG_4"].toFloat();
		qarData.LONG_RES_CA = valueMap["LONG_RES_CA"].toFloat();
		qarData.LONP_LSH = valueMap["LONP_LSH"].toFloat();
		qarData.LONP_MSH = valueMap["LONP_MSH"].toFloat();
		qarData.LOWSPDT = valueMap["LOWSPDT"].toFloat();
		qarData.LOW_ENG_1_S1 = valueMap["LOW_ENG_1_S1"].toFloat();
		qarData.LOW_ENG_1_S2 = valueMap["LOW_ENG_1_S2"].toFloat();
		qarData.LOW_ENG_2_S1 = valueMap["LOW_ENG_2_S1"].toFloat();
		qarData.LOW_ENG_2_S2 = valueMap["LOW_ENG_2_S2"].toFloat();
		qarData.MACH = valueMap["MACH"].toFloat();
		qarData.MACH_SELECT = valueMap["MACH_SELECT"].toFloat();
		qarData.MAGNETIC_HEADING_IRS1_2 = valueMap["MAGNETIC HEADING IRS1/2"].toFloat();
		qarData.MAS_CAU_CA_CLR = valueMap["MAS_CAU_CA_CLR"].toFloat();
		qarData.MAS_WAR_CA_CLR = valueMap["MAS_WAR_CA_CLR"].toFloat();
		qarData.MDA_MDH_CA = valueMap["MDA_MDH_CA"].toFloat();
		qarData.MDA_MDH_FO = valueMap["MDA_MDH_FO"].toFloat();
		qarData.MIDDLE_M_ON_1 = valueMap["MIDDLE_M_ON_1"].toFloat();
		qarData.MIDDLE_M_ON_2 = valueMap["MIDDLE_M_ON_2"].toFloat();
		qarData.N11 = valueMap["N11"].toFloat();
		qarData.N12 = valueMap["N12"].toFloat();
		qarData.N2_1 = valueMap["N2_1"].toFloat();
		qarData.N2_2 = valueMap["N2_2"].toFloat();
		qarData.NO_DATA_BMC1 = valueMap["NO_DATA_BMC1"].toFloat();
		qarData.NO_DATA_BMC2 = valueMap["NO_DATA_BMC2"].toFloat();
		qarData.NWS_FAULT = valueMap["NWS_FAULT"].toFloat();
		qarData.NWS_ORDER_ANG_1 = valueMap["NWS_ORDER_ANG_1"].toFloat();
		qarData.NWS_ORDER_ANG_2 = valueMap["NWS_ORDER_ANG_2"].toFloat();
		qarData.NWS_ORDER_ANG_3 = valueMap["NWS_ORDER_ANG_3"].toFloat();
		qarData.NWS_ORDER_ANG_4 = valueMap["NWS_ORDER_ANG_4"].toFloat();
		qarData.NWS_ORDER_CA_1 = valueMap["NWS_ORDER_CA_1"].toFloat();
		qarData.NWS_ORDER_CA_2 = valueMap["NWS_ORDER_CA_2"].toFloat();
		qarData.NWS_ORDER_CA_3 = valueMap["NWS_ORDER_CA_3"].toFloat();
		qarData.NWS_ORDER_CA_4 = valueMap["NWS_ORDER_CA_4"].toFloat();
		qarData.NWS_ORDER_FO_1 = valueMap["NWS_ORDER_FO_1"].toFloat();
		qarData.NWS_ORDER_FO_2 = valueMap["NWS_ORDER_FO_2"].toFloat();
		qarData.NWS_ORDER_FO_3 = valueMap["NWS_ORDER_FO_3"].toFloat();
		qarData.NWS_ORDER_FO_4 = valueMap["NWS_ORDER_FO_4"].toFloat();
		qarData.NWS_SEL_V_FT1 = valueMap["NWS_SEL_V_FT1"].toFloat();
		qarData.NWS_WHEEL_ANG = valueMap["NWS_WHEEL_ANG"].toFloat();
		qarData.No_data_from_ECU_EEC1 = valueMap["No_data_from_ECU/EEC1"].toFloat();
		qarData.No_data_from_ECU_EEC2 = valueMap["No_data_from_ECU/EEC2"].toFloat();
		qarData.OIL_NO_LOW_PRESS_Eng1 = valueMap["OIL_NO_LOW_PRESS_Eng1"].toFloat();
		qarData.OIL_NO_LOW_PRESS_Eng2 = valueMap["OIL_NO_LOW_PRESS_Eng2"].toFloat();
		qarData.OIL_PRS_1 = valueMap["OIL_PRS_1"].toFloat();
		qarData.OIL_PRS_2 = valueMap["OIL_PRS_2"].toFloat();
		qarData.OIQDAR1 = valueMap["OIQDAR1"].toFloat();
		qarData.OIQDAR2 = valueMap["OIQDAR2"].toFloat();
		qarData.OIQ_1 = valueMap["OIQ_1"].toFloat();
		qarData.OIQ_2 = valueMap["OIQ_2"].toFloat();
		qarData.OUTER_M_ON_1 = valueMap["OUTER_M_ON_1"].toFloat();
		qarData.OUTER_M_ON_2 = valueMap["OUTER_M_ON_2"].toFloat();
		qarData.OVERSPEED_WARN = valueMap["OVERSPEED_WARN"].toFloat();
		qarData.PITCH_ATT_1 = valueMap["PITCH_ATT_1"].toFloat();
		qarData.PITCH_ATT_2 = valueMap["PITCH_ATT_2"].toFloat();
		qarData.PITCH_ATT_FO_1 = valueMap["PITCH_ATT_FO_1"].toFloat();
		qarData.PITCH_ATT_FO_2 = valueMap["PITCH_ATT_FO_2"].toFloat();
		qarData.PITCH_CAPT_1 = valueMap["PITCH_CAPT_1"].toFloat();
		qarData.PITCH_CAPT_2 = valueMap["PITCH_CAPT_2"].toFloat();
		qarData.PITCH_DISCR_WN = valueMap["PITCH_DISCR_WN"].toFloat();
		qarData.PITCH_FO_1 = valueMap["PITCH_FO_1"].toFloat();
		qarData.PITCH_FO_2 = valueMap["PITCH_FO_2"].toFloat();
		qarData.PITCH_RATE1_1 = valueMap["PITCH_RATE1_1"].toFloat();
		qarData.PITCH_RATE1_2 = valueMap["PITCH_RATE1_2"].toFloat();
		qarData.PITCH_RATE1_3 = valueMap["PITCH_RATE1_3"].toFloat();
		qarData.PITCH_RATE1_4 = valueMap["PITCH_RATE1_4"].toFloat();
		qarData.PITCH_VAL_CA = valueMap["PITCH_VAL_CA"].toFloat();
		qarData.PRESEL_FQ = valueMap["PRESEL_FQ"].toFloat();
		qarData.PRIORIT_LCK_CA_1 = valueMap["PRIORIT_LCK_CA_1"].toFloat();
		qarData.PRIORIT_LCK_CA_2 = valueMap["PRIORIT_LCK_CA_2"].toFloat();
		qarData.PRIORIT_LCK_CA_3 = valueMap["PRIORIT_LCK_CA_3"].toFloat();
		qarData.PRIORIT_LCK_CA_4 = valueMap["PRIORIT_LCK_CA_4"].toFloat();
		qarData.PRIORIT_LCK_FO_1 = valueMap["PRIORIT_LCK_FO_1"].toFloat();
		qarData.PRIORIT_LCK_FO_2 = valueMap["PRIORIT_LCK_FO_2"].toFloat();
		qarData.PRIORIT_LCK_FO_3 = valueMap["PRIORIT_LCK_FO_3"].toFloat();
		qarData.PRIORIT_LCK_FO_4 = valueMap["PRIORIT_LCK_FO_4"].toFloat();
		qarData.RALT1 = valueMap["RALT1"].toFloat();
		qarData.RALT1_2 = valueMap["RALT1_2"].toFloat();
		qarData.RALT2 = valueMap["RALT2"].toFloat();
		qarData.RALT2_2 = valueMap["RALT2_2"].toFloat();
		qarData.RAW_ONLY_CA = valueMap["RAW_ONLY_CA"].toFloat();
		qarData.RECORD_VERSION = valueMap["RECORD_VERSION"].toFloat();
		qarData.REV_DEPLOY1 = valueMap["REV_DEPLOY1"].toFloat();
		qarData.REV_DEPLOY2 = valueMap["REV_DEPLOY2"].toFloat();
		qarData.REV_UNLOCK1 = valueMap["REV_UNLOCK1"].toFloat();
		qarData.REV_UNLOCK2 = valueMap["REV_UNLOCK2"].toFloat();
		qarData.ROLL_ATT = valueMap["ROLL_ATT"].toFloat();
		qarData.ROLL_ATT_FO = valueMap["ROLL_ATT_FO"].toFloat();
		qarData.ROLL_CAPT_1 = valueMap["ROLL_CAPT_1"].toFloat();
		qarData.ROLL_CAPT_2 = valueMap["ROLL_CAPT_2"].toFloat();
		qarData.ROLL_DISCR_WN = valueMap["ROLL_DISCR_WN"].toFloat();
		qarData.ROLL_FO_1 = valueMap["ROLL_FO_1"].toFloat();
		qarData.ROLL_FO_2 = valueMap["ROLL_FO_2"].toFloat();
		qarData.ROLL_ORDER_1 = valueMap["ROLL_ORDER_1"].toFloat();
		qarData.ROLL_ORDER_2 = valueMap["ROLL_ORDER_2"].toFloat();
		qarData.ROLL_RATE1 = valueMap["ROLL_RATE1"].toFloat();
		qarData.RUDDER_1 = valueMap["RUDDER_1"].toFloat();
		qarData.RUDDER_2 = valueMap["RUDDER_2"].toFloat();
		qarData.RUDDER_PEDAL_1 = valueMap["RUDDER_PEDAL_1"].toFloat();
		qarData.RUDDER_PEDAL_2 = valueMap["RUDDER_PEDAL_2"].toFloat();
		qarData.RUD_PEDA_FORCE_1 = valueMap["RUD_PEDA_FORCE_1"].toFloat();
		qarData.RUD_PEDA_FORCE_2 = valueMap["RUD_PEDA_FORCE_2"].toFloat();
		qarData.RUD_POS_INPROV = valueMap["RUD_POS_INPROV"].toFloat();
		qarData.SAT = valueMap["SAT"].toFloat();
		qarData.SAT_FO = valueMap["SAT_FO"].toFloat();
		qarData.SDAC1_VALID = valueMap["SDAC1_VALID"].toFloat();
		qarData.SDAC2_VALID = valueMap["SDAC2_VALID"].toFloat();
		qarData.SEC1_PB = valueMap["SEC1_PB"].toFloat();
		qarData.SEC1_fault = valueMap["SEC1_fault"].toFloat();
		qarData.SEC2_PB = valueMap["SEC2_PB"].toFloat();
		qarData.SEC2_fault = valueMap["SEC2_fault"].toFloat();
		qarData.SEC3_PB = valueMap["SEC3_PB"].toFloat();
		qarData.SEC3_fault = valueMap["SEC3_fault"].toFloat();
		qarData.SEL_VERT_SPD = valueMap["SEL_VERT_SPD"].toFloat();
		qarData.SMOKE_AVION_1 = valueMap["SMOKE_AVION_1"].toFloat();
		qarData.SMOKE_AVION_2 = valueMap["SMOKE_AVION_2"].toFloat();
		qarData.SMOKE_CARGO_1 = valueMap["SMOKE_CARGO_1"].toFloat();
		qarData.SMOKE_CARGO_2 = valueMap["SMOKE_CARGO_2"].toFloat();
		qarData.SMOKE_LAVAT_1 = valueMap["SMOKE_LAVAT_1"].toFloat();
		qarData.SMOKE_LAVAT_2 = valueMap["SMOKE_LAVAT_2"].toFloat();
		qarData.SP1_L_1 = valueMap["SP1_L_1"].toFloat();
		qarData.SP1_L_2 = valueMap["SP1_L_2"].toFloat();
		qarData.SP1_L_3 = valueMap["SP1_L_3"].toFloat();
		qarData.SP1_L_4 = valueMap["SP1_L_4"].toFloat();
		qarData.SP1_R_1 = valueMap["SP1_R_1"].toFloat();
		qarData.SP1_R_2 = valueMap["SP1_R_2"].toFloat();
		qarData.SP1_R_3 = valueMap["SP1_R_3"].toFloat();
		qarData.SP1_R_4 = valueMap["SP1_R_4"].toFloat();
		qarData.SP2_L = valueMap["SP2_L"].toFloat();
		qarData.SP2_R = valueMap["SP2_R"].toFloat();
		qarData.SP3_L = valueMap["SP3_L"].toFloat();
		qarData.SP3_R = valueMap["SP3_R"].toFloat();
		qarData.SP4_L = valueMap["SP4_L"].toFloat();
		qarData.SP4_R = valueMap["SP4_R"].toFloat();
		qarData.SP5_L = valueMap["SP5_L"].toFloat();
		qarData.SP5_R = valueMap["SP5_R"].toFloat();
		qarData.SPARE_RED_W_13 = valueMap["SPARE_RED_W_13"].toFloat();
		qarData.SPARE_RED_W_14 = valueMap["SPARE_RED_W_14"].toFloat();
		qarData.SPARE_RED_W_15 = valueMap["SPARE_RED_W_15"].toFloat();
		qarData.SPD_BRAKE = valueMap["SPD_BRAKE"].toFloat();
		qarData.SPD_MACH_A_M = valueMap["SPD_MACH_A_M"].toFloat();
		qarData.SPD_SPD_WARN = valueMap["SPD_SPD_WARN"].toFloat();
		qarData.SSTICK_C_INOP = valueMap["SSTICK_C_INOP"].toFloat();
		qarData.SSTICK_FO_INOP = valueMap["SSTICK_FO_INOP"].toFloat();
		qarData.STAB = valueMap["STAB"].toFloat();
		qarData.STALL = valueMap["STALL"].toFloat();
		qarData.STALLSPD_1 = valueMap["STALLSPD_1"].toFloat();
		qarData.STALLSPD_2 = valueMap["STALLSPD_2"].toFloat();
		qarData.Spoiler1_position_valid = valueMap["Spoiler1_position_valid"].toFloat();
		qarData.Spoiler2_position_valid = valueMap["Spoiler2_position_valid"].toFloat();
		qarData.Spoiler3_position_valid = valueMap["Spoiler3_position_valid"].toFloat();
		qarData.Spoiler4_position_valid = valueMap["Spoiler4_position_valid"].toFloat();
		qarData.Spoiler5_position_valid = valueMap["Spoiler5_position_valid"].toFloat();
		qarData.TAIL_NO1 = valueMap["TAIL_NO1"];
		qarData.TAIL_NO2 = valueMap["TAIL_NO2"];
		qarData.TAIL_NO3 = valueMap["TAIL_NO3"];
		qarData.TAIL_NO4 = valueMap["TAIL_NO4"];
		qarData.TAIL_NO5 = valueMap["TAIL_NO5"];
		qarData.TAIL_NO6 = valueMap["TAIL_NO6"];
		qarData.TAIL_NO7 = valueMap["TAIL_NO7"];
		qarData.TCAS_CMB_CTR = valueMap["TCAS_CMB_CTR"].toFloat();
		qarData.TCAS_DWN_ADV = valueMap["TCAS_DWN_ADV"].toFloat();
		qarData.TCAS_RA_INHIB = valueMap["TCAS_RA_INHIB"].toFloat();
		qarData.TCAS_UP_ADV = valueMap["TCAS_UP_ADV"].toFloat();
		qarData.TCAS_VERT_CTR = valueMap["TCAS_VERT_CTR"].toFloat();
		qarData.TGT_SIDE_SLIP = valueMap["TGT_SIDE_SLIP"].toFloat();
		qarData.THROTT_ANG1 = valueMap["THROTT_ANG1"].toFloat();
		qarData.THROTT_ANG2 = valueMap["THROTT_ANG2"].toFloat();
		qarData.TO1 = valueMap["TO1"];
		qarData.TO2 = valueMap["TO2"];
		qarData.TO3 = valueMap["TO3"];
		qarData.TO3_0 = valueMap["TO3_0"];
		qarData.TO4 = valueMap["TO4"];
		qarData.TOWING_ON = valueMap["TOWING_ON"].toFloat();
		qarData.TO_THR_DISAGRE = valueMap["TO_THR_DISAGRE"].toFloat();
		qarData.TRACK_SEL = valueMap["TRACK_SEL"].toFloat();
		qarData.TRKANGTR = valueMap["TRKANGTR"].toFloat();
		qarData.TRK_FPA_SEL = valueMap["TRK_FPA_SEL"].toFloat();
		qarData.TRUE_HEADING = valueMap["TRUE HEADING"].toFloat();
		qarData.UTC_HOURS = valueMap["UTC_HOURS"].toFloat();
		qarData.UTC_MIN = valueMap["UTC_MIN"].toFloat();
		qarData.UTC_SEC = valueMap["UTC_SEC"].toFloat();
		qarData.VAPP = valueMap["VAPP"].toFloat();
		qarData.VAPP_BIS = valueMap["VAPP_BIS"].toFloat();
		qarData.VB11 = valueMap["VB11"].toFloat();
		qarData.VB12 = valueMap["VB12"].toFloat();
		qarData.VB21 = valueMap["VB21"].toFloat();
		qarData.VB22 = valueMap["VB22"].toFloat();
		qarData.VB_N1_ADV_1 = valueMap["VB_N1_ADV_1"].toFloat();
		qarData.VB_N1_ADV_2 = valueMap["VB_N1_ADV_2"].toFloat();
		qarData.VB_N2_ADV_1 = valueMap["VB_N2_ADV_1"].toFloat();
		qarData.VB_N2_ADV_2 = valueMap["VB_N2_ADV_2"].toFloat();
		qarData.VCTRENDS = valueMap["VCTRENDS"].toFloat();
		qarData.VHF_1_EMITTING = valueMap["VHF_1_EMITTING"].toFloat();
		qarData.VOR1_Frequency = valueMap["VOR1_Frequency"].toFloat();
		qarData.VOR2_Frequency = valueMap["VOR2_Frequency"].toFloat();
		qarData.VOR_MODE_ARM = valueMap["VOR_MODE_ARM"].toFloat();
		qarData.VOR_MODE_DIS = valueMap["VOR_MODE_DIS"].toFloat();
		qarData.VOR_MODE_EGD = valueMap["VOR_MODE_EGD"].toFloat();
		qarData.VRTG_1 = valueMap["VRTG_1"].toFloat();
		qarData.VRTG_2 = valueMap["VRTG_2"].toFloat();
		qarData.VRTG_3 = valueMap["VRTG_3"].toFloat();
		qarData.VRTG_4 = valueMap["VRTG_4"].toFloat();
		qarData.VRTG_5 = valueMap["VRTG_5"].toFloat();
		qarData.VRTG_6 = valueMap["VRTG_6"].toFloat();
		qarData.VRTG_7 = valueMap["VRTG_7"].toFloat();
		qarData.VRTG_8 = valueMap["VRTG_8"].toFloat();
		qarData.WINDIR = valueMap["WINDIR"].toFloat();
		qarData.WINSPD = valueMap["WINSPD"].toFloat();
		qarData.WSHEAR_ON_1 = valueMap["WSHEAR_ON_1"].toFloat();
		qarData.WSHEAR_ON_2 = valueMap["WSHEAR_ON_2"].toFloat();
		qarData.YAW = valueMap["YAW"].toFloat();
		qarData.YAW_DAMP1_SYS1_1 = valueMap["YAW_DAMP1_SYS1_1"].toFloat();
		qarData.YAW_DAMP1_SYS1_2 = valueMap["YAW_DAMP1_SYS1_2"].toFloat();
		qarData.YAW_DAMP2_SYS1_1 = valueMap["YAW_DAMP2_SYS1_1"].toFloat();
		qarData.YAW_DAMP2_SYS1_2 = valueMap["YAW_DAMP2_SYS1_2"].toFloat();
		qarData.YAW_RATE = valueMap["YAW_RATE"].toFloat();
		qarData.time = valueMap["time"];

		emit doGetQARData(qarData);

	
}

